﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace SurvivalCav
{
    class Principal : AnimatedObject
    {

        KeyboardState teclado;
        KeyboardState tecladoAntigo;
      public int velocidade;
      float gravidade;
      float velocidadeY;
      bool salto;
            
            
            



        public Principal(Texture2D textura, int width, int height):
            base(textura,width,height)
        {
            velocidade = 2;
            gravidade = 0.5f;
            velocidadeY = 10;
            salto = false;

            AnimationStructure animationCorrerD = new AnimationStructure();
            animationCorrerD.frameCount = 3;
            animationCorrerD.frameWidth = width;
            animationCorrerD.frameHeight = height;
            animationCorrerD.framePerSecond = 6;
            animationCorrerD.X = 0;
            animationCorrerD.Y = 32 * 2;
            listaAnimations.Add("correrD", animationCorrerD);

            ChangeAnimation("default");

            AnimationStructure animationDefaultUp = new AnimationStructure();
            animationDefaultUp.frameCount = 3;
            animationDefaultUp.frameWidth = width;
            animationDefaultUp.frameHeight = height;
            animationDefaultUp.framePerSecond = 6;
            animationDefaultUp.X = 0;
            animationDefaultUp.Y = 32 * 3;
            listaAnimations.Add("andarUp", animationDefaultUp);

            ChangeAnimation("defaultUp");

            AnimationStructure animationDefaultDw = new AnimationStructure();
            animationDefaultDw.frameCount = 3;
            animationDefaultDw.frameWidth = width;
            animationDefaultDw.frameHeight = height;
            animationDefaultDw.framePerSecond = 6;
            animationDefaultDw.X = 0;
            animationDefaultDw.Y = 0;
            listaAnimations.Add("andarDw", animationDefaultDw);

            ChangeAnimation("defaultDw");
        }


        public override void Update(GameTime gametime)
        {
            teclado = Keyboard.GetState();
           

            if(teclado.IsKeyDown(Keys.D))
            {
                this.posicao.X += velocidade;
                ChangeAnimation("correrD");
                efeito = SpriteEffects.None;

            }

            if (teclado.IsKeyDown(Keys.A))
            {
                this.posicao.X -= velocidade;
                ChangeAnimation("correrD");
                efeito = SpriteEffects.FlipHorizontally;
            }
            if (teclado.IsKeyDown(Keys.S))
            {
                //this.posicao.Y += velocidade;
                //ChangeAnimation("andarDw");
               
                
            }



            else if (teclado.IsKeyUp(Keys.A) && (teclado.IsKeyUp(Keys.D) && (teclado.IsKeyUp(Keys.S) && (teclado.IsKeyUp(Keys.W)))))
            {
                ChangeAnimation("default");
            }

            if(posicao.Y > 400)
            {
                posicao.Y = 400;
                velocidadeY = 0;
            }

            if (salto)
            {
                if (posicao.Y >= 400)
                {
                    
                    salto = false;
                }
            }

                else
                {
                    if (teclado.IsKeyDown(Keys.W) && (tecladoAntigo.IsKeyDown(Keys.W)))
                    {
                        velocidadeY = -10;
                        salto = true;
                    }
                }
            
            
            



            base.Update(gametime);

            tecladoAntigo = teclado;

            velocidadeY += gravidade;
            posicao.Y += velocidadeY;
            

        }

        
            
        
    }
}
